The approaches described in this section could be pursued, but are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
Complex distributed computer systems require system designers to adhere to various design constraints to represent the behavior of system components in computer program logic. Various organizations are focusing on developing general frameworks, languages, or products for enabling policy-driven mechanisms to cope with this complexity. Examples of such organizations include technical groups, such as the Internet Engineering Task Force (IETF), the Distributed Management Task Force (DMTF), the Object Management Group (OMG), the Organization for the Advancement of Structured Information Standards (OASIS), and Tele-Management Forum (TMF); academic institutions, such as Imperial College; and industry, including Evidian, ILOG and others.
However, conventional policy-based approaches suffer numerous disadvantages. For example, such approaches do not allow creating and implementing policy statements or expressions in which an action can fail but the action chain completes. Such approaches also do not allow policy statements or expressions in which repeated attempts to successfully complete an action are performed.
Another drawback of conventional approaches is that such approaches do not provide a mechanism for specifying that a “tentatively complete action” may be skipped, or for conditionally skipping some actions. Typically, this is because a tentatively complete action creates potential inconsistencies among dependent actions. When a policy is executed, most policy-based systems assume that the actions specified in a policy are performed. However, when a tentatively complete action is introduced, the successful execution of all actions, satisfying all action dependencies, is questionable. This can occur when the network status unexpectedly changes, or when some actions partially fail and therefore some post-conditions may not hold. In this case, if all subsequent policy actions following a partially successful one are not accommodated, the managed system will be in a deadlock state, unstable or in an unknown state.
In the process of designing policy-driven systems, the granularity levels of policies vary and the mechanisms supporting policy specifications are more detailed when they are closer to the policy target. There is a disconnect between policy specifications at higher levels and policy implementation due to the mechanisms mismatch. As a result, it is difficult to convey to the lower levels (implementation), directives driven by objective functions (high levels). Practically, the programmer has no direct instructions on how to handle exceptions, or how to decide on a high-level system-wide problem based on a narrowed local execution exceptions
Current policy-based systems cannot accommodate the foregoing issues.
Based on the foregoing, there is a clear need for a technique for identifying what actions may, in some contexts, not terminate successfully and building policy-based management systems accordingly.